package com.集合.Collection___;

import java.util.ArrayList;
import java.util.Iterator;

public class 遍历对象方式1_Iterator {
    @SuppressWarnings("all")
    public static void main(String[] args) {

        /**
         *1.Iterator对象称为迭代器，主要用于遍历Collection集合中的元素；
         *2.只要实现了Collection接口，都能使用Iterator（）方法，用于返回一个实现了Iterator接口的对象，
         * 即： 可以返回一个迭代器
         * ArrayList list = new ArrayList();创建集合
         *Iterator iterator = list.iterator();  得到迭代器
         * 3.iterator仅用于遍历集合，本身不存放对象；
         */

        /**
         * Iterator方法：
         * 1.首先得到迭代器    ArrayList list = new ArrayList();创建集合
         *                  Iterator iterator = list.iterator();  得到迭代器
         *2.iterator.hasNext()  判断集合是否还有下一个元素，如果有返回true，没有则false;
         * 3.iterator,next()  将指针移动到下一个元素，并取出该元素；
         * 注意：在使用next（）方法之前一定要用hasNext（）方法判断下一个元素是否存在，
         * 如果下一个元素不存在并且使用了next方法，会抛出NoSuchElementException异常；
         *
         * 4.如果指针已经到了最后的元素，后面没有元素了，如果还想用iterator.next()，就得把迭代器重置 ： iterator = list.iterator(); 从头开始；
         */
        ArrayList list = new ArrayList();
        list.add("a");//添加三个元素
        list.add("b");
        list.add("c");
        Iterator iterator = list.iterator();//得到迭代器
        while (iterator.hasNext()) {  //判断下一个元素是否存在；
            Object next = iterator.next();  //指针下移，并返回该元素；
            System.out.println(next);//输出该元素
        }
/**
 * 最开始指针在最上面；
 * interator.next --->
 *                          ______
 *                          |  a |
 *                          |____|
 *                          |  b |
 *                          |____|
 *                          |  c |
 *                          |____|
 *
 * interator.hasNext()判断为true， 使用一次interstor.next（）方法后，指针往下移，并取出该元素 a；
 *                              ______
 *        interator.next --->  |  a |
 *                             |____|
 *                             |  b |
 *                             |____|
 *                             |  c |
 *                             |____|

 * interator.hasNext()判断为true， 再使用一次interstor.next（）方法后，指针再往下移，并取出该元素 b；
 *                              ______
 *                             |  a |
 *                             |____|
 *         interator.next ---> |  b |
 *                             |____|
 *                             |  c |
 *                             |____|

 * interator.hasNext()判断为true，再使用一次interstor.next（）方法后，指针再往下移，并取出该元素 c；
 *                              ______
 *                             |  a |
 *                             |____|
 *                             |  b |
 *                             |____|
 *        interator.next --->  |  c |
 *                             |____|

   interator.hasNext()判断为false，表示下一个元素没有；结束；
 */
    }
}
